package edu.fudan.weixin;
import java.security.GeneralSecurityException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.KeyGenerator;
import org.junit.Test;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.util.JSON;
import edu.fudan.eservice.common.utils.CommonUtil;
import edu.fudan.eservice.common.utils.Config;
import edu.fudan.eservice.common.utils.EncodeHelper;
import edu.fudan.eservice.common.utils.MongoUtil;
import edu.fudan.weixin.model.TACOAuth2Model;
import edu.fudan.weixin.utils.BindingHelper;
public class TestPushMsg {
public void newclient() throws NoSuchAlgorithmException
{
String clientid="ecard";
String pass=EncodeHelper.randpass(8);
System.out.println("Password:"+pass);
KeyGenerator kg=KeyGenerator.getInstance("DESede");
kg.init(168);
String key=EncodeHelper.bytes2hex(kg.generateKey().getEncoded());
DBObject o=new BasicDBObject("clientid",clientid).append("password", EncodeHelper.digest(pass,"SHA")).append("enckey", key);
MongoUtil.getInstance().getDB().getCollection("Clients").save(o);
}
@Test
public void balance() throws Exception
{
String uid="04538";
String clientid="ecard";
String pass="4c9cc8d2a1b6cfa7f6019b0c38c9ee537d100861";
String enckey="cb2c197c4ca21cad80fd4a85cdb0efb33d620d43d9548f7a";
DB db=MongoUtil.getInstance().getDB();
DBObject user=db.getCollection("Bindings").findOne(new BasicDBObject("binds",new BasicDBObject("$elemMatch",new BasicDBObject("uisid",uid))));
BindingHelper.removeOthers(user, uid);
BasicDBList l=new TACOAuth2Model().yktxx(user);
Object balance=((DBObject)l.get(0)).get("card_balance")+"Ԫ";
Object username=((DBObject)l.get(0)).get("username")+" ("+uid+")";
DBObject data=new BasicDBObject("url",Config.getInstance().get("weixin.context")).append("first", "目前账号余额").append("name", username).append("money", balance).append("remark", "本消息仅供测试");
long now=System.currentTimeMillis();
String userenc=EncodeHelper.bytes2hex(EncodeHelper.encrypt("DESede", (pass+now).getBytes(),EncodeHelper.hex2bytes(enckey),null));
DBObject head=new BasicDBObject("template","ecard_balance").append("touser", uid).append("timestamp", now).append("clientid", clientid)
.append("userenc", userenc)
.append("checksum",EncodeHelper.digest(JSON.serialize(data).replaceAll("[ \\r\\n\\t]", "")+uid+userenc, "SHA"));
System.out.println(JSON.serialize(head).replaceAll("[ \\r\\n]", ""));
System.out.println(CommonUtil.postWebRequest(Config.getInstance().get("weixin.context")+"msgpush.act", JSON.serialize(new BasicDBObject("head",head).append("data", data)).getBytes("utf-8"), "application/json"));
}
public void getst() throws Exception
{
String clientid="ecard";
String pass="4c9cc8d2a1b6cfa7f6019b0c38c9ee537d100861";
String enckey="cb2c197c4ca21cad80fd4a85cdb0efb33d620d43d9548f7a";
long msgid=200487780;
long now=System.currentTimeMillis();
String userenc=EncodeHelper.bytes2hex(EncodeHelper.encrypt("DESede", (pass+now).getBytes(),EncodeHelper.hex2bytes(enckey),null));
System.out.println(CommonUtil.getWebContent(Config.getInstance().get("weixin.context")+"pushresult.act?clientid="+clientid+"&userenc="+userenc+"×tamp="+now+"&msgid="+msgid));
}
}